package com.qst.order.service;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qst.order.controller.AdminController;
import com.qst.order.domain.DTO.*;
import com.qst.order.domain.Product;
import com.qst.order.domain.VO.ProductSpecVO;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.transaction.annotation.Transactional;

import java.math.BigDecimal;
import java.util.List;


public interface ProductService extends IService<Product> {



    IPage<Product> getAllProducts(String category, String keyword, BigDecimal minPrice, BigDecimal maxPrice, String sort,int pageNum, int pageSize);


    public ProductSpecVO getSpecAndPriceByProductId(Integer productId);

    boolean updateStock(Integer productId, Integer quantity);


    IPage<Product> getStock(IPage<Product> productIPage, String keyword, Integer userId, String category,Integer status);

    boolean toggleStatus(Integer productId);

    boolean saveAndSpec(ProductSubmitDTO productSubmitDTO, Integer merchantId);


    /**
     * 多条件查询预警商品（分页）
     * @param page 页码
     * @param size 每页条数
     * @param keyword 搜索关键词（商品名称/ID）
     * @param category 分类
     * @param level 预警级别（critical/warning/normal）
     * @return 分页商品数据
     */
    IPage<Product> queryWarningProducts(Integer page, Integer size, String keyword, String category, String level,Integer merchantId);



    boolean UpdateProduct(ProductSubmitDTO productSubmitDTO, Integer merchantId);


    //获取商品审核列表
    IPage<Product> queryProductList(ProductReviewQueryDTO queryDTO);

//获取商品状态统计信息
    ProductReviewStatsDTO getReviewStats();

    void handleReview(Integer productId, ReviewSubmitDTO reviewDTO);

    void resetToPending(Integer productId);
}
